package com.wonders.hisdoctor.station.project.base.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.wonders.his.common.utils.validator.group.PrimaryGroup;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * <p>检验主记录</p>
 * <p>db_table: LAB_TEST_MASTER</p>
 * @author zhaogongming
 * @date 2021/02/08
 */
@ApiModel("检验主记录")
@Accessors(chain = true)
@Data
@ToString
@TableName("LAB_TEST_MASTER")
public class LabTestMaster implements Serializable {

    private static final long serialVersionUID = -2485195933802816427L;

    /** `主键` db_field: TEST_NO; desc: 申请序号：每个检验申请在整个系统范围内唯一标识 */
    @ApiModelProperty("申请序号：每个检验申请在整个系统范围内唯一标识")
    @TableId
    @NotNull(message = "申请序号：每个检验申请在整个系统范围内唯一标识不能为空", groups = PrimaryGroup.class)
    @TableField("TEST_NO")
    private String testNo;

    /** db_field: PRIORITY_INDICATOR; desc: 优先标志：反映此申请的紧急程度。0-普通 1-紧急 */
    @ApiModelProperty("优先标志：反映此申请的紧急程度。0-普通 1-紧急")
    @TableField("PRIORITY_INDICATOR")
    private Integer priorityIndicator;

    /** db_field: PATIENT_ID; desc: 病人标识号：对无主索引的病人可为空 */
    @ApiModelProperty("病人标识号：对无主索引的病人可为空")
    @TableField("PATIENT_ID")
    private String patientId;

    /** db_field: VISIT_ID; desc: 本次住院标识：对门诊病人为空 */
    @ApiModelProperty("本次住院标识：对门诊病人为空")
    @TableField("VISIT_ID")
    private Integer visitId;

    /** db_field: WORKING_ID; desc: 工作单号：检验科室为内部管理而给每个申请分配的标识号，在整个系统范围及同一科室不同日期的申请间并不唯一 */
    @ApiModelProperty("工作单号：检验科室为内部管理而给每个申请分配的标识号，在整个系统范围及同一科室不同日期的申请间并不唯一")
    @TableField("WORKING_ID")
    private String workingId;

    /** db_field: EXECUTE_DATE; desc: 执行日期：准备执行日期 */
    @ApiModelProperty("执行日期：准备执行日期")
    @TableField("EXECUTE_DATE")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date executeDate;

    /** db_field: NAME; desc: 姓名：病人姓名，考虑到门诊病人或外医疗单位来的病人可能没有主索引 */
    @ApiModelProperty("姓名：病人姓名，考虑到门诊病人或外医疗单位来的病人可能没有主索引")
    @TableField("NAME")
    private String name;

    /** db_field: NAME_PHONETIC; desc: 姓名拼音：大写，字间用一空格间隔，超长截断 */
    @ApiModelProperty("姓名拼音：大写，字间用一空格间隔，超长截断")
    @TableField("NAME_PHONETIC")
    private String namePhonetic;

    /** db_field: CHARGE_TYPE; desc: 费别：使用规范名称，由用户定义，见1.9费别字典 */
    @ApiModelProperty("费别：使用规范名称，由用户定义，见1.9费别字典")
    @TableField("CHARGE_TYPE")
    private String chargeType;

    /** db_field: SEX; desc: 性别：使用规范名称，本系统定义，见1.14性别字典 */
    @ApiModelProperty("性别：使用规范名称，本系统定义，见1.14性别字典")
    @TableField("SEX")
    private String sex;

    /** db_field: AGE; desc: 年龄 */
    @ApiModelProperty("年龄")
    @TableField("AGE")
    private Integer age;

    /** db_field: TEST_CAUSE; desc: 检验目的：正文描述，如查体等 */
    @ApiModelProperty("检验目的：正文描述，如查体等")
    @TableField("TEST_CAUSE")
    private String testCause;

    /** db_field: RELEVANT_CLINIC_DIAG; desc: 临床诊断：诊断正文 */
    @ApiModelProperty("临床诊断：诊断正文")
    @TableField("RELEVANT_CLINIC_DIAG")
    private String relevantClinicDiag;

    /** db_field: SPECIMEN; desc: 标本：使用标准描述，如血、尿等 */
    @ApiModelProperty("标本：使用标准描述，如血、尿等")
    @TableField("SPECIMEN")
    private String specimen;

    /** db_field: NOTES_FOR_SPCM; desc: 标本说明：标本采集的条件说明，如饭前、饭后一小时等。自由格式，由医生开检验单时说明 */
    @ApiModelProperty("标本说明：标本采集的条件说明，如饭前、饭后一小时等。自由格式，由医生开检验单时说明")
    @TableField("NOTES_FOR_SPCM")
    private String notesForSpcm;

    /** db_field: SPCM_RECEIVED_DATE_TIME; desc: 标本收到日期及时间：由执行科室填入 */
    @ApiModelProperty("标本收到日期及时间：由执行科室填入")
    @TableField("SPCM_RECEIVED_DATE_TIME")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date spcmReceivedDateTime;

    /** db_field: SPCM_SAMPLE_DATE_TIME; desc: 标本采样日期及时间：由开单科室或执行科室填入 */
    @ApiModelProperty("标本采样日期及时间：由开单科室或执行科室填入")
    @TableField("SPCM_SAMPLE_DATE_TIME")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date spcmSampleDateTime;

    /** db_field: REQUESTED_DATE_TIME; desc: 申请日期及时间：医生开检验单的时间 */
    @ApiModelProperty("申请日期及时间：医生开检验单的时间")
    @TableField("REQUESTED_DATE_TIME")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date requestedDateTime;

    /** db_field: ORDERING_DEPT; desc: 申请科室：科室代码，用户定义，如果为病房发出的申请，则为病房代码（非临床科室代码） */
    @ApiModelProperty("申请科室：科室代码，用户定义，如果为病房发出的申请，则为病房代码（非临床科室代码）")
    @TableField("ORDERING_DEPT")
    private String orderingDept;

    /** db_field: ORDERING_PROVIDER; desc: 申请医生：医生姓名 */
    @ApiModelProperty("申请医生：医生姓名")
    @TableField("ORDERING_PROVIDER")
    private String orderingProvider;

    /** db_field: PERFORMED_BY; desc: 执行科室：检验科室代码 */
    @ApiModelProperty("执行科室：检验科室代码")
    @TableField("PERFORMED_BY")
    private String performedBy;

    /** db_field: RESULT_STATUS; desc: 结果状态：反映申请的执行情况，如：收到标本、已执行、初步报告、确认报告等，初始时，由申请方填入，以后根据检查的执行情况，由执行者修改，使用代码，本系统定义，见3.7检查结果状态字典 */
    @ApiModelProperty("结果状态：反映申请的执行情况，如：收到标本、已执行、初步报告、确认报告等，初始时，由申请方填入，以后根据检查的执行情况，由执行者修改，使用代码，本系统定义，见3.7检查结果状态字典")
    @TableField("RESULT_STATUS")
    private String resultStatus;

    /** db_field: RESULTS_RPT_DATE_TIME; desc: 报告日期及时间：出结果报告的日期及时间 */
    @ApiModelProperty("报告日期及时间：出结果报告的日期及时间")
    @TableField("RESULTS_RPT_DATE_TIME")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date resultsRptDateTime;

    /** db_field: TRANSCRIPTIONIST; desc: 报告者：报告签发者或检验操作者 */
    @ApiModelProperty("报告者：报告签发者或检验操作者")
    @TableField("TRANSCRIPTIONIST")
    private String transcriptionist;

    /** db_field: VERIFIED_BY; desc: 校对者：结果校对者 */
    @ApiModelProperty("校对者：结果校对者")
    @TableField("VERIFIED_BY")
    private String verifiedBy;

    /** db_field: COSTS; desc: 费用：本检验单按价表中标准价格计算得到的总费用，由执行科室或后台划价程序填入 */
    @ApiModelProperty("费用：本检验单按价表中标准价格计算得到的总费用，由执行科室或后台划价程序填入")
    @TableField("COSTS")
    private BigDecimal costs;

    /** db_field: CHARGES; desc: 应收费用：考虑费别因素后，计算得到的本检验单的总费用，由执行科室或后台划价程序填入 */
    @ApiModelProperty("应收费用：考虑费别因素后，计算得到的本检验单的总费用，由执行科室或后台划价程序填入")
    @TableField("CHARGES")
    private BigDecimal charges;

    /** db_field: BILLING_INDICATOR; desc: 计价标志：0-未计价 1-已计价，由收费程序使用 */
    @ApiModelProperty("计价标志：0-未计价 1-已计价，由收费程序使用")
    @TableField("BILLING_INDICATOR")
    private Integer billingIndicator;

    /** db_field: PRINT_INDICATOR; desc: 打印标志：0-未打印 1-已打印，由检验科室打印检验报告时使用 */
    @ApiModelProperty("打印标志：0-未打印 1-已打印，由检验科室打印检验报告时使用")
    @TableField("PRINT_INDICATOR")
    private Integer printIndicator;

    /** db_field: SUBJECT; desc: 科目 */
    @ApiModelProperty("科目")
    @TableField("SUBJECT")
    private String subject;

    /** db_field: COMMENTS; desc: 注释 */
    @ApiModelProperty("注释")
    @TableField("COMMENTS")
    private String comments;

    /** db_field: DATE_OF_BIRTH; desc: 出生日期 */
    @ApiModelProperty("出生日期")
    @TableField("DATE_OF_BIRTH")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date dateOfBirth;

    /** db_field: PATIENT_SOURCE; desc: 病人来源 */
    @ApiModelProperty("病人来源")
    @TableField("PATIENT_SOURCE")
    private String patientSource;

    /** db_field: VISIT_DATE; desc: 就诊日期 */
    @ApiModelProperty("就诊日期")
    @TableField("VISIT_DATE")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date visitDate;

    /** db_field: VISIT_NO; desc: 就诊号 */
    @ApiModelProperty("就诊号")
    @TableField("VISIT_NO")
    private Integer visitNo;

    /** db_field: PIC_PATH; desc: 照片路径 */
    @ApiModelProperty("照片路径")
    @TableField("PIC_PATH")
    private String picPath;

    /** db_field: DIAGNOSIS_MEMO; desc: 诊断备注 */
    @ApiModelProperty("诊断备注")
    @TableField("DIAGNOSIS_MEMO")
    private String diagnosisMemo;

    /** db_field: REQUEST_SOURCE; desc: 请求来源 */
    @ApiModelProperty("请求来源")
    @TableField("REQUEST_SOURCE")
    private String requestSource;

    /** db_field: SPCM_COLLECTOR; desc: SPCM_COLLECTOR */
    @ApiModelProperty("SPCM_COLLECTOR")
    @TableField("SPCM_COLLECTOR")
    private String spcmCollector;

    /** db_field: NOTES; desc: 注意事项 */
    @ApiModelProperty("注意事项")
    @TableField("NOTES")
    private String notes;

    /** db_field: INSURANCE_ATTR; desc: 保险属性 */
    @ApiModelProperty("保险属性")
    @TableField("INSURANCE_ATTR")
    private Integer insuranceAttr;

    /** db_field: AUTOMATIC_AUDIT_STATUS; desc: 自动审计状态 */
    @ApiModelProperty("自动审计状态")
    @TableField("AUTOMATIC_AUDIT_STATUS")
    private String automaticAuditStatus;

}